/**
 * 第7章 Spring AOP基础
 * 代码清单-r2ch07d-232页c：实现一个前置增强 {@link top.kaoshanji.r2ch07d.GreetingBeforeAdvice}
 * 代码清单-r2ch07d-232页d：使用前置增强 {@link top.kaoshanji.r2ch07d.GreetingBeforeAdviceMain}
 * 代码清单-r2ch07d-234页c：通过ProxyFactoryBean配置前置增强代理-r2ch07d/greeting-before-advice-beans.xml
 * 代码清单-r2ch07d-235页a：验证一下前置增强 {@link top.kaoshanji.r2ch07d.GreetingBeforeAdviceContext}
 * 代码清单-r2ch07d-235页c：定义一个最终增强 {@link top.kaoshanji.r2ch07d.GreetingAfterReturningAdvice}
 * 代码清单-r2ch07d-234页c：通过ProxyFactoryBean配置前置增强和最终增强代理-r2ch07d/greeting-after-returning-advice-beans.xml
 * 代码清单-r2ch07d-01：验证一下前置和最终增强 {@link top.kaoshanji.r2ch07d.GreetingAfterReturningAdviceContext}
 * 代码清单-r2ch07d-237页a：定义一个环绕增强 {@link top.kaoshanji.r2ch07d.GreetingAround}
 * 代码清单-r2ch07d-237页b：通过ProxyFactoryBean配置环绕增强代理-r2ch07d/greeting-around-beans.xml
 * 代码清单-r2ch07d-02：验证一下环绕增强 {@link top.kaoshanji.r2ch07d.GreetingAroundContext}
 * 代码清单-r2ch07d-238页a：抛出异常的业务方法 {@link top.kaoshanji.r2ch07d.ForumService}
 * 代码清单-r2ch07d-238页b：定义一个异常增强，需要注意方法签名 {@link top.kaoshanji.r2ch07d.TransactionManager}
 * 代码清单-r2ch07d-237页b：通过ProxyFactoryBean配置异常增强代理-r2ch07d/transaction-manager-throws-advice-beans.xml
 * 代码清单-r2ch07d-03：验证一下异常增强 {@link top.kaoshanji.r2ch07d.TransactionManagerThrowsAdviceContext}
 * @author kaoshanji
 * ^_^
 * create time 2025/5/7 16:48
 */
package top.kaoshanji.r2ch07d;